package com.zephyr.vchcenter.pbcFile.preTreat;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.Element;

import com.zephyr.vchcenter.bean.ConfigData;
import com.zephyr.vchcenter.dao.IBaseDao;
import com.zephyr.vchcenter.helper.SpringHelper;
import com.zephyr.vchcenter.pbcFile.commons.Constance;
import com.zephyr.vchcenter.pbcFile.configBean.Dict;
import com.zephyr.vchcenter.pbcFile.util.FileParserUtil;
import com.zephyr.vchcenter.pbcFile.util.Parser;
import com.zephyr.vchcenter.pbcFile.util.XMLParserUtil;

/**
 * @author zhaoyunxiao 
 * 深圳文件预处理器
 */
public class ShenzhenPreTreator extends XMLParserUtil implements BasePreTreator {
    private static final Logger log=Logger.getLogger(ShenzhenPreTreator.class);
	public List<String> preTreat(Dict dict) {
		File file = dict.getFile();
		List<String> list = null;
        if (file.getName().contains("xml")) {
        	log.debug("深圳文件xml格式");
        	
			IBaseDao dao=(IBaseDao)SpringHelper.getBean("baseDao");
			ConfigData configData=new ConfigData();
			log.debug(dict.getName());
			configData.setSubno(dict.getName());
			configData.setKey("fileModle");
			//
			ConfigData configDataInDB=null;
			List<ConfigData> listInDB=dao.findByExample(configData);
			if(listInDB!=null&&listInDB.size()>0){
				configDataInDB=listInDB.get(0);
			}else{
				configDataInDB=configData;
			}
			configDataInDB.setValue("1");
			dao.saveOrUpdate(configDataInDB);
			//configData.setValue("1");
			//dao.saveOrUpdate(configData);
			//new Parser().parse(file);
			Document document = getDocument(file);
			Element element = getRoot(document);
			list = getAnyElements(element, "Item");
		} else {
			log.debug("深圳文件单行格式");
			IBaseDao dao=(IBaseDao)SpringHelper.getBean("baseDao");
			ConfigData configData=new ConfigData();
			log.debug(dict.getName());
			configData.setSubno(dict.getName());
			configData.setKey("fileModle");
			//
			ConfigData configDataInDB=null;
			List<ConfigData> listInDB=dao.findByExample(configData);
			if(listInDB!=null&&listInDB.size()>0){
				configDataInDB=listInDB.get(0);
			}else{
				configDataInDB=configData;
			}
			configDataInDB.setValue("2");
			dao.saveOrUpdate(configDataInDB);
			dict.setShenzhenFile(1);
			//��������ʽ
			dict.setRegex(dict.getSecondRegex());
			//�������б�
			dict.setProperties(dict.getSecondProperties());
			List<String> temp = FileParserUtil.readFileByLine(file);
			
			List<String> tempList = new ArrayList<String>();
            //��tempList���й��˲�������
			for (String str : temp) {
				if (str != null && str.trim().contains("DTL")) {
					tempList.add(str.trim());
				}
			}
			list = tempList;
			/*
			 * if(list!=null&&list.size()>0&&list.get(list.size()-2).contains("TRL")){
			 * list.remove(list.size()-2); }
			 */
		}
		return list;
	}

}
